package cn.com.cdboost.udf;

import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.types.Row;

import java.sql.Time;
import java.text.SimpleDateFormat;

public class DorisTimeToStr implements MapFunction<Row, Row> {

    // 定义时间格式化器
    private transient SimpleDateFormat dateFormat;

    public DorisTimeToStr() {
        // 目标格式为 HH:mm:ss
        dateFormat = new SimpleDateFormat("HH:mm:ss");
    }

    @Override
    public Row map(Row value) throws Exception {
        // 遍历 Row 中的每一个字段
        for (int i = 0; i < value.getArity(); i++) {
            Object field = value.getField(i);

            // 检查是否为 Time 类型
            if (field ==null){
                // 处理 null 值情况，设为 "null" 或其他默认字符串
                value.setField(i, "null");
            }
            if (field instanceof Time) {
                try {
                    // 尝试将时间字段格式化为字符串
                    String formattedTime = dateFormat.format(field);
                    value.setField(i, formattedTime);
                } catch (Exception e) {
                    // 如果时间格式化失败，则记录并使用默认值或保持原值
                    value.setField(i, "Invalid Time Format");
                }
            }
        }
        return value;
    }
}
